package com.litidea.dao;

import java.util.List;
import java.util.Map;

import net.sf.json.JSONObject;

import com.litidea.dataobjects.DepartmentDO;
import com.litidea.dataobjects.MenuNodeDO;
import com.litidea.dataobjects.RoleDO;
import com.litidea.dataobjects.UserDO;

public interface SystemDAO {
	
	/**
     * 获取菜单节点对象
     * @return
     */
	public List<MenuNodeDO> getMenuNodeDOs();
	
	/**
	 * 获取第一级菜单
	 * @return
	 */
	public List<MenuNodeDO> getFirstPrivMenus(Integer userId);
	
	/**
     * 获取孩子菜单
     * @param allParentId
     * @return
     */
    public List<MenuNodeDO> getMenuChilds(String allParentId , Integer userId);
    
    /**
     * 获取所有菜单
     * @return
     */
    public List<MenuNodeDO> getAllMenus();
    
    /**
     * ͨ���ű�Ż�ȡ������获取通过部门ID获取菜单
     * @param id
     * @return
     */
    public DepartmentDO getDepartMentById(String id);
    
    /**
     * 获取所有菜单
     * @return
     */
    public List<DepartmentDO> getAllDepartMents();
    
    /**
     * 根据父亲获取所有部门
     * @return
     */
    public List<DepartmentDO> getAllDepartmentByParent();
    
    /**
     * 保存孩子部门
     * @param map
     * @return
     */
    public String saveChildDepartment(Map<String ,String>map);
    
    /**
     * 添加同级部门
     * @param map
     * @return
     */
    public String addSiblingDepartment(Map<String ,String>map);
    
    /**
     * 编辑部门
     * @param map
     * @return
     */
    public String editDepartMent(Map<String ,String>map);
    
    /**
     * 删除部门
     * @param map
     * @return
     */
    public String delDeparentMent(Map<String ,String>map);
    
    /**
     * 移动部门
     * @param params
     * @return
     */
    public String moveDepartMent(Map<String , String>params);
    
    /**
     * 设置部门经理
     * @param params
     * @return
     */
    public String setDeptMgr(Map<String , String>params);
    
    /**
     * 是否有孩子节点
     * @param id
     * @return
     */
    public boolean getHasChildNum(String id);
    
    
    
    /**
     * 添加角色
     * @param params
     */
    public void addNewRole(Map<String , String>params);
    
    /**
     * 通过ID获取角色
     * @param ids
     * @return
     */
    public List<RoleDO> getRolesByIds(String ids);
    
    /**
     * 编辑角色
     * @param params
     */
    public void editRole(Map<String , String>params);
    
    /**
     * 删除角色
     * @param params
     */
    public void delRole(Map<String , String>params);
    
    /**
     * 获取页列表信息
     * @param params
     * @return
     */
    public JSONObject getRolePageList(Map<String , String>params);
    
    /**
     * 根据角色获取菜单
     * @param roleId
     * @return
     */
    public Map<String , Integer> getRoleMenus(String roleId);
    
    /**
     * 保存角色的菜单
     * @param menus
     * @param roleId
     */
    public void saveRoleMenus(String []menus , String roleId);
    
    /**
     * 获取用户分页列表
     * @param params
     * @return
     */
    public JSONObject getUserPageList(Map<String , String>params);
    
    /**
     * 根据部门获取用户
     * @param deptId
     * @return
     */
    public List<UserDO> getUserByDept(Integer deptId);
    
    /**
     * 获取登录人信息
     * @return
     */
    public UserDO getUserByLoginName(String loginName);
    
    /**
     * ͨ���ɫID��ȡ�û��б�
     * @param roles
     * @return
     */
    public List<UserDO> getUsersByRoles(String roles);
    
    /**
     * 通过用户ID获取用户
     * @return
     */
    public UserDO getUserByUserId(String userId);
    
    /**
     * 添加新用户
     * @param params
     * 
     */
    public void addNewUser(Map<String , String>params);
    
    /**
     * 编辑用户
     * @param params
     */
    public void editUser(Map<String , String>params);
    
    /**
     * 修改用户密码
     * @param userDO
     */
    public void chgUserPassWord(UserDO userDO);
    
    /**
     * 删除用户
     * @param params
     */
    public void delUser(Map<String , String>params);
    
    /**
     * 获取用户的角色
     * @return
     */
    public List<RoleDO> getUserRoles(String userId);
    
    /**
     * 获取非用户的角色
     * @param userId
     * @return
     */
    public List<RoleDO> getNotUserRoles(String userId , String name);
    
    /**
     * 保存用户的角色
     * @param userId
     * @param roles
     */
    public void saveUserRoles(String userId , String[]roles);
    
    /**
     * 添加登录
     * @param userId
     * @return
     */
    public Integer addLogin(Integer userId , String ip);
    
    /**
     * 登出
     * @param loginId
     */
    public void loginOut(Integer loginId , Integer type);

}
